package com.cyan.teamquestionnaire.service;

import com.cyan.teamquestionnaire.beans.PageInfo;
import com.cyan.teamquestionnaire.entity.AnswerSheet;
import com.cyan.teamquestionnaire.entity.Questionnaire;
import com.cyan.teamquestionnaire.entity.QuestionnaireFee;
import com.cyan.teamquestionnaire.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface QuestionnaireService {

    // 通过题目模糊查询
    PageInfo<Questionnaire> queryQuestionnaireByTitle(PageInfo<Questionnaire> pageInfo);

    // 通过Qid模糊查询
    PageInfo<Questionnaire> queryQuestionnaireByQid(PageInfo<Questionnaire> pageInfo);


    PageInfo<Questionnaire> selectByCreatorName(PageInfo<Questionnaire> pageInfo);

    //分页查询模板
    PageInfo<Questionnaire> queryTemplateY(PageInfo<Questionnaire> pageInfo);

    // 不分页
    List<Questionnaire> queryQuestionnaireByTitle(String title, String name);

    // 模糊查询
    List<Questionnaire> queryQuestionnaireByQid(String qid);

    Questionnaire queryQuestionnaireByQidEq(String qid);

    // 不分页的查询，重载
    List<Questionnaire> selectByCreatorName(String name);

    // 不分页——获取模板
    List<Questionnaire> queryTemplate(String title);

    AnswerSheet selectAnsweredSheet(AnswerSheet answerSheet);

    List<AnswerSheet> selectAnswers(String qId);

    List<QuestionnaireFee> getFeeOfTenant(User user);

    void insertQuestionnaire(Questionnaire questionnaire);

    int putQuestionnaireToBin(Questionnaire questionnaire);


    //查询name删除在回收站的问卷，根据name和status查询,同时对title进行模糊查询
    PageInfo<Questionnaire> getQuestionnaireFromBin(PageInfo<Questionnaire> pageInfo);


    //查询name删除在回收站的问卷，根据name和status查询,不分页不模糊
    List<Questionnaire> getQuestionnaireFromBinNY(String name);

    int updateQuestionnaireContent(Questionnaire questionnaire);

    int deleteQuestionnaire(String qId);

    int groupCnt(User u);

    void issue(String qId, String gId); // 第一次发布问卷

    void updateStatus(String qId, String status); // 修改问卷状态

    //发布问卷时候判断，这个用户是否还有空间来进行问卷发布
    boolean userHasSpace(String name);

    //删除问卷的恢复
    void recoveryDeletedQuestionnaire(String qId);

    //发布日期在今天的函数
    int releaseTimeInToday(Map<String,Object> map);

    int countQuestionnaire(String name);

    //查询租户下的所有用户的status=1和status=2的问卷list，分页模糊。
    PageInfo<Questionnaire> questionnaireInTenant(PageInfo<Questionnaire> pageInfo);

    //分页公共函数
    PageInfo<Questionnaire> splitPage(PageInfo<Questionnaire> pageInfo, List<Questionnaire> list);

}
